<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/gfp.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/gfp.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="Maybe">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X19MSU5VWF9HRlBfSF8w"><span class="b">__LINUX_GFP_H</span></a>
<a name="2" /><span class="Maybe">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19MSU5VWF9HRlBfSF8w"><span class="b">__LINUX_GFP_H</span></a>
<a name="3" /><span class="Maybe">       3:</span> 
<a name="4" /><span class="Maybe">       4:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">mmzone</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="5" /><span class="Maybe">       5:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">stddef</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="6" /><span class="Maybe">       6:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">linkage</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="7" /><span class="Maybe">       7:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">topology</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="8" /><span class="Maybe">       8:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">mmdebug</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="9" /><span class="Maybe">       9:</span> 
<a name="10" /><span class="Maybe">      10:</span> <span class="m">struct</span> <span class="b">vm_area_struct</span><span class="f">;</span>
<a name="11" /><span class="Maybe">      11:</span> 
<a name="12" /><span class="Maybe">      12:</span> <span class="k">/* Plain integer GFP bitmasks. Do not use this directly. */</span>
<a name="13" /><span class="Maybe">      13:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX0RNQV8w"><span class="b">___GFP_DMA</span></a>        <span class="c">0x01u</span>
<a name="14" /><span class="Maybe">      14:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX0hJR0hNRU1fMA__"><span class="b">___GFP_HIGHMEM</span></a>        <span class="c">0x02u</span>
<a name="15" /><span class="Maybe">      15:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX0RNQTMyXzA_"><span class="b">___GFP_DMA32</span></a>        <span class="c">0x04u</span>
<a name="16" /><span class="Maybe">      16:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX01PVkFCTEVfMA__"><span class="b">___GFP_MOVABLE</span></a>        <span class="c">0x08u</span>
<a name="17" /><span class="Maybe">      17:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX1dBSVRfMA__"><span class="b">___GFP_WAIT</span></a>        <span class="c">0x10u</span>
<a name="18" /><span class="Maybe">      18:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19fR0ZQX0hJR0hfMA__"><span class="b">___GFP_HIGH</span></a>        <span class="c">0x20u</span>
<a name="19" /><span class="Maybe">      19:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX0lPXzA_"><span class="b">___GFP_IO</span></a>        <span class="c">0x40u</span>
<a name="20" /><span class="Maybe">      20:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX0ZTXzA_"><span class="b">___GFP_FS</span></a>        <span class="c">0x80u</span>
<a name="21" /><span class="Maybe">      21:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19fR0ZQX0NPTERfMA__"><span class="b">___GFP_COLD</span></a>        <span class="c">0x100u</span>
<a name="22" /><span class="Maybe">      22:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19fR0ZQX05PV0FSTl8w"><span class="b">___GFP_NOWARN</span></a>        <span class="c">0x200u</span>
<a name="23" /><span class="Maybe">      23:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19fR0ZQX1JFUEVBVF8w"><span class="b">___GFP_REPEAT</span></a>        <span class="c">0x400u</span>
<a name="24" /><span class="Maybe">      24:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19fR0ZQX05PRkFJTF8w"><span class="b">___GFP_NOFAIL</span></a>        <span class="c">0x800u</span>
<a name="25" /><span class="Maybe">      25:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX05PUkVUUllfMA__"><span class="b">___GFP_NORETRY</span></a>        <span class="c">0x1000u</span>
<a name="26" /><span class="Maybe">      26:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19fR0ZQX01FTUFMTE9DXzA_"><span class="b">___GFP_MEMALLOC</span></a>        <span class="c">0x2000u</span>
<a name="27" /><span class="Maybe">      27:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX0NPTVBfMA__"><span class="b">___GFP_COMP</span></a>        <span class="c">0x4000u</span>
<a name="28" /><span class="Maybe">      28:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX1pFUk9fMA__"><span class="b">___GFP_ZERO</span></a>        <span class="c">0x8000u</span>
<a name="29" /><span class="Maybe">      29:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19fR0ZQX05PTUVNQUxMT0NfMA__"><span class="b">___GFP_NOMEMALLOC</span></a>    <span class="c">0x10000u</span>
<a name="30" /><span class="Maybe">      30:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19fR0ZQX0hBUkRXQUxMXzA_"><span class="b">___GFP_HARDWALL</span></a>        <span class="c">0x20000u</span>
<a name="31" /><span class="Maybe">      31:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX1RISVNOT0RFXzA_"><span class="b">___GFP_THISNODE</span></a>        <span class="c">0x40000u</span>
<a name="32" /><span class="Maybe">      32:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX1JFQ0xBSU1BQkxFXzA_"><span class="b">___GFP_RECLAIMABLE</span></a>    <span class="c">0x80000u</span>
<a name="33" /><span class="Maybe">      33:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX0tNRU1DR18w"><span class="b">___GFP_KMEMCG</span></a>        <span class="c">0x100000u</span>
<a name="34" /><span class="Maybe">      34:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19fR0ZQX05PVFJBQ0tfMA__"><span class="b">___GFP_NOTRACK</span></a>        <span class="c">0x200000u</span>
<a name="35" /><span class="Maybe">      35:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19fR0ZQX05PX0tTV0FQRF8w"><span class="b">___GFP_NO_KSWAPD</span></a>    <span class="c">0x400000u</span>
<a name="36" /><span class="Maybe">      36:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19fR0ZQX09USEVSX05PREVfMA__"><span class="b">___GFP_OTHER_NODE</span></a>    <span class="c">0x800000u</span>
<a name="37" /><span class="Maybe">      37:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19fR0ZQX1dSSVRFXzA_"><span class="b">___GFP_WRITE</span></a>        <span class="c">0x1000000u</span>
<a name="38" /><span class="Maybe">      38:</span> <span class="k">/* If the above are modified, __GFP_BITS_SHIFT may need updating */</span>
<a name="39" /><span class="Maybe">      39:</span> 
<a name="40" /><span class="Maybe">      40:</span> <span class="k">/*</span>
<a name="41" /><span class="Maybe">      41:</span> <span class="k"> * GFP bitmasks..</span>
<a name="42" /><span class="Maybe">      42:</span> <span class="k"> *</span>
<a name="43" /><span class="Maybe">      43:</span> <span class="k"> * Zone modifiers (see linux/mmzone.h - low three bits)</span>
<a name="44" /><span class="Maybe">      44:</span> <span class="k"> *</span>
<a name="45" /><span class="Maybe">      45:</span> <span class="k"> * Do not put any conditional on these. If necessary modify the definitions</span>
<a name="46" /><span class="Maybe">      46:</span> <span class="k"> * without the underscores and use them consistently. The definitions here may</span>
<a name="47" /><span class="Maybe">      47:</span> <span class="k"> * be used in bit comparisons.</span>
<a name="48" /><span class="Maybe">      48:</span> <span class="k"> */</span>
<a name="49" /><span class="Maybe">      49:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19HRlBfRE1BXzA_"><span class="b">__GFP_DMA</span></a>    <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="b">gfp_t</span><span class="f">)</span><a href="cpu.c_macros_ref.html#_X19fR0ZQX0RNQV8w"><span class="b">___GFP_DMA</span></a><span class="f">)</span>
<a name="50" /><span class="Maybe">      50:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19HRlBfSElHSE1FTV8w"><span class="b">__GFP_HIGHMEM</span></a>    <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="b">gfp_t</span><span class="f">)</span><a href="cpu.c_macros_ref.html#_X19fR0ZQX0hJR0hNRU1fMA__"><span class="b">___GFP_HIGHMEM</span></a><span class="f">)</span>
<a name="51" /><span class="Maybe">      51:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19HRlBfRE1BMzJfMA__"><span class="b">__GFP_DMA32</span></a>    <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="b">gfp_t</span><span class="f">)</span><a href="cpu.c_macros_ref.html#_X19fR0ZQX0RNQTMyXzA_"><span class="b">___GFP_DMA32</span></a><span class="f">)</span>
<a name="52" /><span class="Maybe">      52:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19HRlBfTU9WQUJMRV8w"><span class="b">__GFP_MOVABLE</span></a>    <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="b">gfp_t</span><span class="f">)</span><a href="cpu.c_macros_ref.html#_X19fR0ZQX01PVkFCTEVfMA__"><span class="b">___GFP_MOVABLE</span></a><span class="f">)</span>  <span class="k">/* Page is movable */</span>
<a name="53" /><span class="Maybe">      53:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_R0ZQX1pPTkVNQVNLXzA_"><span class="b">GFP_ZONEMASK</span></a>    <span class="f">(</span><a href="cpu.c_macros_ref.html#_X19HRlBfRE1BXzA_"><span class="b">__GFP_DMA</span></a><span class="f">|</span><a href="cpu.c_macros_ref.html#_X19HRlBfSElHSE1FTV8w"><span class="b">__GFP_HIGHMEM</span></a><span class="f">|</span><a href="cpu.c_macros_ref.html#_X19HRlBfRE1BMzJfMA__"><span class="b">__GFP_DMA32</span></a><span class="f">|</span><a href="cpu.c_macros_ref.html#_X19HRlBfTU9WQUJMRV8w"><span class="b">__GFP_MOVABLE</span></a><span class="f">)</span>
<a name="54" /><span class="Maybe">      54:</span> <span class="k">/*</span>
<a name="55" /><span class="Maybe">      55:</span> <span class="k"> * Action modifiers - doesn&apos;t change the zoning</span>
<a name="56" /><span class="Maybe">      56:</span> <span class="k"> *</span>
<a name="57" /><span class="Maybe">      57:</span> <span class="k"> * __GFP_REPEAT: Try hard to allocate the memory, but the allocation attempt</span>
<a name="58" /><span class="Maybe">      58:</span> <span class="k"> * _might_ fail.  This depends upon the particular VM implementation.</span>
<a name="59" /><span class="Maybe">      59:</span> <span class="k"> *</span>
<a name="60" /><span class="Maybe">      60:</span> <span class="k"> * __GFP_NOFAIL: The VM implementation _must_ retry infinitely: the caller</span>
<a name="61" /><span class="Maybe">      61:</span> <span class="k"> * cannot handle allocation failures.  This modifier is deprecated and no new</span>
<a name="62" /><span class="Maybe">      62:</span> <span class="k"> * users should be added.</span>
<a name="63" /><span class="Maybe">      63:</span> <span class="k"> *</span>
<a name="64" /><span class="Maybe">      64:</span> <span class="k"> * __GFP_NORETRY: The VM implementation must not retry indefinitely.</span>
<a name="65" /><span class="Maybe">      65:</span> <span class="k"> *</span>
<a name="66" /><span class="Maybe">      66:</span> <span class="k"> * __GFP_MOVABLE: Flag that this page will be movable by the page migration</span>
<a name="67" /><span class="Maybe">      67:</span> <span class="k"> * mechanism or reclaimed</span>
<a name="68" /><span class="Maybe">      68:</span> <span class="k"> */</span>
<a name="69" /><span class="Maybe">      69:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19HRlBfV0FJVF8w"><span class="b">__GFP_WAIT</span></a>    <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="b">gfp_t</span><span class="f">)</span><a href="cpu.c_macros_ref.html#_X19fR0ZQX1dBSVRfMA__"><span class="b">___GFP_WAIT</span></a><span class="f">)</span>    <span class="k">/* Can wait and reschedule? */</span>
<a name="70" /><span class="Maybe">      70:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19HRlBfSElHSF8w"><span class="b">__GFP_HIGH</span></a>    <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="b">gfp_t</span><span class="f">)</span><a href="cpu.c_macros_noref.html#_X19fR0ZQX0hJR0hfMA__"><span class="b">___GFP_HIGH</span></a><span class="f">)</span>    <span class="k">/* Should access emergency pools? */</span>
<a name="71" /><span class="Maybe">      71:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19HRlBfSU9fMA__"><span class="b">__GFP_IO</span></a>    <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="b">gfp_t</span><span class="f">)</span><a href="cpu.c_macros_ref.html#_X19fR0ZQX0lPXzA_"><span class="b">___GFP_IO</span></a><span class="f">)</span>    <span class="k">/* Can start physical IO? */</span>
<a name="72" /><span class="Maybe">      72:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19HRlBfRlNfMA__"><span class="b">__GFP_FS</span></a>    <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="b">gfp_t</span><span class="f">)</span><a href="cpu.c_macros_ref.html#_X19fR0ZQX0ZTXzA_"><span class="b">___GFP_FS</span></a><span class="f">)</span>    <span class="k">/* Can call down to low-level FS? */</span>
<a name="73" /><span class="Maybe">      73:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19HRlBfQ09MRF8w"><span class="b">__GFP_COLD</span></a>    <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="b">gfp_t</span><span class="f">)</span><a href="cpu.c_macros_noref.html#_X19fR0ZQX0NPTERfMA__"><span class="b">___GFP_COLD</span></a><span class="f">)</span>    <span class="k">/* Cache-cold page required */</span>
<a name="74" /><span class="Maybe">      74:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19HRlBfTk9XQVJOXzA_"><span class="b">__GFP_NOWARN</span></a>    <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="b">gfp_t</span><span class="f">)</span><a href="cpu.c_macros_noref.html#_X19fR0ZQX05PV0FSTl8w"><span class="b">___GFP_NOWARN</span></a><span class="f">)</span>    <span class="k">/* Suppress page allocation failure warning */</span>
<a name="75" /><span class="Maybe">      75:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19HRlBfUkVQRUFUXzA_"><span class="b">__GFP_REPEAT</span></a>    <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="b">gfp_t</span><span class="f">)</span><a href="cpu.c_macros_noref.html#_X19fR0ZQX1JFUEVBVF8w"><span class="b">___GFP_REPEAT</span></a><span class="f">)</span>    <span class="k">/* See above */</span>
<a name="76" /><span class="Maybe">      76:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19HRlBfTk9GQUlMXzA_"><span class="b">__GFP_NOFAIL</span></a>    <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="b">gfp_t</span><span class="f">)</span><a href="cpu.c_macros_noref.html#_X19fR0ZQX05PRkFJTF8w"><span class="b">___GFP_NOFAIL</span></a><span class="f">)</span>    <span class="k">/* See above */</span>
<a name="77" /><span class="Maybe">      77:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19HRlBfTk9SRVRSWV8w"><span class="b">__GFP_NORETRY</span></a>    <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="b">gfp_t</span><span class="f">)</span><a href="cpu.c_macros_ref.html#_X19fR0ZQX05PUkVUUllfMA__"><span class="b">___GFP_NORETRY</span></a><span class="f">)</span> <span class="k">/* See above */</span>
<a name="78" /><span class="Maybe">      78:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19HRlBfTUVNQUxMT0NfMA__"><span class="b">__GFP_MEMALLOC</span></a>    <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="b">gfp_t</span><span class="f">)</span><a href="cpu.c_macros_noref.html#_X19fR0ZQX01FTUFMTE9DXzA_"><span class="b">___GFP_MEMALLOC</span></a><span class="f">)</span><span class="k">/* Allow access to emergency reserves */</span>
<a name="79" /><span class="Maybe">      79:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19HRlBfQ09NUF8w"><span class="b">__GFP_COMP</span></a>    <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="b">gfp_t</span><span class="f">)</span><a href="cpu.c_macros_ref.html#_X19fR0ZQX0NPTVBfMA__"><span class="b">___GFP_COMP</span></a><span class="f">)</span>    <span class="k">/* Add compound page metadata */</span>
<a name="80" /><span class="Maybe">      80:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19HRlBfWkVST18w"><span class="b">__GFP_ZERO</span></a>    <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="b">gfp_t</span><span class="f">)</span><a href="cpu.c_macros_ref.html#_X19fR0ZQX1pFUk9fMA__"><span class="b">___GFP_ZERO</span></a><span class="f">)</span>    <span class="k">/* Return zeroed page on success */</span>
<a name="81" /><span class="Maybe">      81:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19HRlBfTk9NRU1BTExPQ18w"><span class="b">__GFP_NOMEMALLOC</span></a> <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="b">gfp_t</span><span class="f">)</span><a href="cpu.c_macros_noref.html#_X19fR0ZQX05PTUVNQUxMT0NfMA__"><span class="b">___GFP_NOMEMALLOC</span></a><span class="f">)</span> <span class="k">/* Don&apos;t use emergency reserves.</span>
<a name="82" /><span class="Maybe">      82:</span> <span class="k">                             * This takes precedence over the</span>
<a name="83" /><span class="Maybe">      83:</span> <span class="k">                             * __GFP_MEMALLOC flag if both are</span>
<a name="84" /><span class="Maybe">      84:</span> <span class="k">                             * set</span>
<a name="85" /><span class="Maybe">      85:</span> <span class="k">                             */</span>
<a name="86" /><span class="Maybe">      86:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19HRlBfSEFSRFdBTExfMA__"><span class="b">__GFP_HARDWALL</span></a>   <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="b">gfp_t</span><span class="f">)</span><a href="cpu.c_macros_noref.html#_X19fR0ZQX0hBUkRXQUxMXzA_"><span class="b">___GFP_HARDWALL</span></a><span class="f">)</span> <span class="k">/* Enforce hardwall cpuset memory allocs */</span>
<a name="87" /><span class="Maybe">      87:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19HRlBfVEhJU05PREVfMA__"><span class="b">__GFP_THISNODE</span></a>    <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="b">gfp_t</span><span class="f">)</span><a href="cpu.c_macros_ref.html#_X19fR0ZQX1RISVNOT0RFXzA_"><span class="b">___GFP_THISNODE</span></a><span class="f">)</span><span class="k">/* No fallback, no policies */</span>
<a name="88" /><span class="Maybe">      88:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19HRlBfUkVDTEFJTUFCTEVfMA__"><span class="b">__GFP_RECLAIMABLE</span></a> <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="b">gfp_t</span><span class="f">)</span><a href="cpu.c_macros_ref.html#_X19fR0ZQX1JFQ0xBSU1BQkxFXzA_"><span class="b">___GFP_RECLAIMABLE</span></a><span class="f">)</span> <span class="k">/* Page is reclaimable */</span>
<a name="89" /><span class="Maybe">      89:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19HRlBfTk9UUkFDS18w"><span class="b">__GFP_NOTRACK</span></a>    <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="b">gfp_t</span><span class="f">)</span><a href="cpu.c_macros_noref.html#_X19fR0ZQX05PVFJBQ0tfMA__"><span class="b">___GFP_NOTRACK</span></a><span class="f">)</span>  <span class="k">/* Don&apos;t track with kmemcheck */</span>
<a name="90" /><span class="Maybe">      90:</span> 
<a name="91" /><span class="Maybe">      91:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19HRlBfTk9fS1NXQVBEXzA_"><span class="b">__GFP_NO_KSWAPD</span></a>    <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="b">gfp_t</span><span class="f">)</span><a href="cpu.c_macros_noref.html#_X19fR0ZQX05PX0tTV0FQRF8w"><span class="b">___GFP_NO_KSWAPD</span></a><span class="f">)</span>
<a name="92" /><span class="Maybe">      92:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19HRlBfT1RIRVJfTk9ERV8w"><span class="b">__GFP_OTHER_NODE</span></a> <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="b">gfp_t</span><span class="f">)</span><a href="cpu.c_macros_noref.html#_X19fR0ZQX09USEVSX05PREVfMA__"><span class="b">___GFP_OTHER_NODE</span></a><span class="f">)</span> <span class="k">/* On behalf of other node */</span>
<a name="93" /><span class="Maybe">      93:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19HRlBfS01FTUNHXzA_"><span class="b">__GFP_KMEMCG</span></a>    <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="b">gfp_t</span><span class="f">)</span><a href="cpu.c_macros_ref.html#_X19fR0ZQX0tNRU1DR18w"><span class="b">___GFP_KMEMCG</span></a><span class="f">)</span> <span class="k">/* Allocation comes from a memcg-accounted resource */</span>
<a name="94" /><span class="Maybe">      94:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19HRlBfV1JJVEVfMA__"><span class="b">__GFP_WRITE</span></a>    <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="b">gfp_t</span><span class="f">)</span><a href="cpu.c_macros_noref.html#_X19fR0ZQX1dSSVRFXzA_"><span class="b">___GFP_WRITE</span></a><span class="f">)</span>    <span class="k">/* Allocator intends to dirty page */</span>
<a name="95" /><span class="Maybe">      95:</span> 
<a name="96" /><span class="Maybe">      96:</span> <span class="k">/*</span>
<a name="97" /><span class="Maybe">      97:</span> <span class="k"> * This may seem redundant, but it&apos;s a way of annotating false positives vs.</span>
<a name="98" /><span class="Maybe">      98:</span> <span class="k"> * allocations that simply cannot be supported (e.g. page tables).</span>
<a name="99" /><span class="Maybe">      99:</span> <span class="k"> */</span>
<a name="100" /><span class="Maybe">     100:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19HRlBfTk9UUkFDS19GQUxTRV9QT1NJVElWRV8w"><span class="b">__GFP_NOTRACK_FALSE_POSITIVE</span></a> <span class="f">(</span><a href="cpu.c_macros_noref.html#_X19HRlBfTk9UUkFDS18w"><span class="b">__GFP_NOTRACK</span></a><span class="f">)</span>
<a name="101" /><span class="Maybe">     101:</span> 
<a name="102" /><span class="Maybe">     102:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19HRlBfQklUU19TSElGVF8w"><span class="b">__GFP_BITS_SHIFT</span></a> <span class="c">25</span>    <span class="k">/* Room for N __GFP_FOO bits */</span>
<a name="103" /><span class="Maybe">     103:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19HRlBfQklUU19NQVNLXzA_"><span class="b">__GFP_BITS_MASK</span></a> <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="b">gfp_t</span><span class="f">)</span><span class="f">(</span><span class="f">(</span><span class="c">1</span> <span class="f">&lt;&lt;</span> <a href="cpu.c_macros_noref.html#_X19HRlBfQklUU19TSElGVF8w"><span class="b">__GFP_BITS_SHIFT</span></a><span class="f">)</span> <span class="f">-</span> <span class="c">1</span><span class="f">)</span><span class="f">)</span>
<a name="104" /><span class="Maybe">     104:</span> 
<a name="105" /><span class="Maybe">     105:</span> <span class="k">/* This equals 0, but use constants in case they ever change */</span>
<a name="106" /><span class="Maybe">     106:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_R0ZQX05PV0FJVF8w"><span class="b">GFP_NOWAIT</span></a>    <span class="f">(</span><a href="cpu.c_macros_noref.html#_R0ZQX0FUT01JQ18w"><span class="b">GFP_ATOMIC</span></a> <span class="f">&amp;</span> <span class="f">~</span><a href="cpu.c_macros_noref.html#_X19HRlBfSElHSF8w"><span class="b">__GFP_HIGH</span></a><span class="f">)</span>
<a name="107" /><span class="Maybe">     107:</span> <span class="k">/* GFP_ATOMIC means both !wait (__GFP_WAIT not set) and use emergency pool */</span>
<a name="108" /><span class="Maybe">     108:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_R0ZQX0FUT01JQ18w"><span class="b">GFP_ATOMIC</span></a>    <span class="f">(</span><a href="cpu.c_macros_noref.html#_X19HRlBfSElHSF8w"><span class="b">__GFP_HIGH</span></a><span class="f">)</span>
<a name="109" /><span class="Maybe">     109:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_R0ZQX05PSU9fMA__"><span class="b">GFP_NOIO</span></a>    <span class="f">(</span><a href="cpu.c_macros_ref.html#_X19HRlBfV0FJVF8w"><span class="b">__GFP_WAIT</span></a><span class="f">)</span>
<a name="110" /><span class="Maybe">     110:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_R0ZQX05PRlNfMA__"><span class="b">GFP_NOFS</span></a>    <span class="f">(</span><a href="cpu.c_macros_ref.html#_X19HRlBfV0FJVF8w"><span class="b">__GFP_WAIT</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19HRlBfSU9fMA__"><span class="b">__GFP_IO</span></a><span class="f">)</span>
<a name="111" /><span class="Maybe">     111:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_R0ZQX0tFUk5FTF8w"><span class="b">GFP_KERNEL</span></a>    <span class="f">(</span><a href="cpu.c_macros_ref.html#_X19HRlBfV0FJVF8w"><span class="b">__GFP_WAIT</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19HRlBfSU9fMA__"><span class="b">__GFP_IO</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19HRlBfRlNfMA__"><span class="b">__GFP_FS</span></a><span class="f">)</span>
<a name="112" /><span class="Maybe">     112:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_R0ZQX1RFTVBPUkFSWV8w"><span class="b">GFP_TEMPORARY</span></a>    <span class="f">(</span><a href="cpu.c_macros_ref.html#_X19HRlBfV0FJVF8w"><span class="b">__GFP_WAIT</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19HRlBfSU9fMA__"><span class="b">__GFP_IO</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19HRlBfRlNfMA__"><span class="b">__GFP_FS</span></a> <span class="f">|</span> \
<a name="113" /><span class="Maybe">     113:</span>              <a href="cpu.c_macros_ref.html#_X19HRlBfUkVDTEFJTUFCTEVfMA__"><span class="b">__GFP_RECLAIMABLE</span></a><span class="f">)</span>
<a name="114" /><span class="Maybe">     114:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_R0ZQX1VTRVJfMA__"><span class="b">GFP_USER</span></a>    <span class="f">(</span><a href="cpu.c_macros_ref.html#_X19HRlBfV0FJVF8w"><span class="b">__GFP_WAIT</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19HRlBfSU9fMA__"><span class="b">__GFP_IO</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19HRlBfRlNfMA__"><span class="b">__GFP_FS</span></a> <span class="f">|</span> <a href="cpu.c_macros_noref.html#_X19HRlBfSEFSRFdBTExfMA__"><span class="b">__GFP_HARDWALL</span></a><span class="f">)</span>
<a name="115" /><span class="Maybe">     115:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_R0ZQX0hJR0hVU0VSXzA_"><span class="b">GFP_HIGHUSER</span></a>    <span class="f">(</span><a href="cpu.c_macros_ref.html#_X19HRlBfV0FJVF8w"><span class="b">__GFP_WAIT</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19HRlBfSU9fMA__"><span class="b">__GFP_IO</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19HRlBfRlNfMA__"><span class="b">__GFP_FS</span></a> <span class="f">|</span> <a href="cpu.c_macros_noref.html#_X19HRlBfSEFSRFdBTExfMA__"><span class="b">__GFP_HARDWALL</span></a> <span class="f">|</span> \
<a name="116" /><span class="Maybe">     116:</span>              <a href="cpu.c_macros_ref.html#_X19HRlBfSElHSE1FTV8w"><span class="b">__GFP_HIGHMEM</span></a><span class="f">)</span>
<a name="117" /><span class="Maybe">     117:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_R0ZQX0hJR0hVU0VSX01PVkFCTEVfMA__"><span class="b">GFP_HIGHUSER_MOVABLE</span></a>    <span class="f">(</span><a href="cpu.c_macros_ref.html#_X19HRlBfV0FJVF8w"><span class="b">__GFP_WAIT</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19HRlBfSU9fMA__"><span class="b">__GFP_IO</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19HRlBfRlNfMA__"><span class="b">__GFP_FS</span></a> <span class="f">|</span> \
<a name="118" /><span class="Maybe">     118:</span>                  <a href="cpu.c_macros_noref.html#_X19HRlBfSEFSRFdBTExfMA__"><span class="b">__GFP_HARDWALL</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19HRlBfSElHSE1FTV8w"><span class="b">__GFP_HIGHMEM</span></a> <span class="f">|</span> \
<a name="119" /><span class="Maybe">     119:</span>                  <a href="cpu.c_macros_ref.html#_X19HRlBfTU9WQUJMRV8w"><span class="b">__GFP_MOVABLE</span></a><span class="f">)</span>
<a name="120" /><span class="Maybe">     120:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_R0ZQX0lPRlNfMA__"><span class="b">GFP_IOFS</span></a>    <span class="f">(</span><a href="cpu.c_macros_ref.html#_X19HRlBfSU9fMA__"><span class="b">__GFP_IO</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19HRlBfRlNfMA__"><span class="b">__GFP_FS</span></a><span class="f">)</span>
<a name="121" /><span class="Maybe">     121:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_R0ZQX1RSQU5TSFVHRV8w"><span class="b">GFP_TRANSHUGE</span></a>    <span class="f">(</span><a href="cpu.c_macros_noref.html#_R0ZQX0hJR0hVU0VSX01PVkFCTEVfMA__"><span class="b">GFP_HIGHUSER_MOVABLE</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19HRlBfQ09NUF8w"><span class="b">__GFP_COMP</span></a> <span class="f">|</span> \
<a name="122" /><span class="Maybe">     122:</span>              <a href="cpu.c_macros_noref.html#_X19HRlBfTk9NRU1BTExPQ18w"><span class="b">__GFP_NOMEMALLOC</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19HRlBfTk9SRVRSWV8w"><span class="b">__GFP_NORETRY</span></a> <span class="f">|</span> <a href="cpu.c_macros_noref.html#_X19HRlBfTk9XQVJOXzA_"><span class="b">__GFP_NOWARN</span></a> <span class="f">|</span> \
<a name="123" /><span class="Maybe">     123:</span>              <a href="cpu.c_macros_noref.html#_X19HRlBfTk9fS1NXQVBEXzA_"><span class="b">__GFP_NO_KSWAPD</span></a><span class="f">)</span>
<a name="124" /><span class="Maybe">     124:</span> 
<a name="125" /><span class="Maybe">     125:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX05VTUFfMA__"><span class="b">CONFIG_NUMA</span></a>
<a name="126" /><span class="Maybe">     126:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_R0ZQX1RISVNOT0RFXzA_"><span class="b">GFP_THISNODE</span></a>    <span class="f">(</span><a href="cpu.c_macros_ref.html#_X19HRlBfVEhJU05PREVfMA__"><span class="b">__GFP_THISNODE</span></a> <span class="f">|</span> <a href="cpu.c_macros_noref.html#_X19HRlBfTk9XQVJOXzA_"><span class="b">__GFP_NOWARN</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19HRlBfTk9SRVRSWV8w"><span class="b">__GFP_NORETRY</span></a><span class="f">)</span>
<a name="127" /><span class="False">     127:</span> <span class="f">#</span><span class="n">else</span>
<a name="128" /><span class="False">     128:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_R0ZQX1RISVNOT0RFXzA_"><span class="b">GFP_THISNODE</span></a>    <span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="b">gfp_t</span><span class="f">)</span><span class="c">0</span><span class="f">)</span>
<a name="129" /><span class="Maybe">     129:</span> <span class="f">#</span><span class="n">endif</span>
<a name="130" /><span class="Maybe">     130:</span> 
<a name="131" /><span class="Maybe">     131:</span> <span class="k">/* This mask makes up all the page movable related flags */</span>
<a name="132" /><span class="Maybe">     132:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_R0ZQX01PVkFCTEVfTUFTS18w"><span class="b">GFP_MOVABLE_MASK</span></a> <span class="f">(</span><a href="cpu.c_macros_ref.html#_X19HRlBfUkVDTEFJTUFCTEVfMA__"><span class="b">__GFP_RECLAIMABLE</span></a><span class="f">|</span><a href="cpu.c_macros_ref.html#_X19HRlBfTU9WQUJMRV8w"><span class="b">__GFP_MOVABLE</span></a><span class="f">)</span>
<a name="133" /><span class="Maybe">     133:</span> 
<a name="134" /><span class="Maybe">     134:</span> <span class="k">/* Control page allocator reclaim behavior */</span>
<a name="135" /><span class="Maybe">     135:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_R0ZQX1JFQ0xBSU1fTUFTS18w"><span class="b">GFP_RECLAIM_MASK</span></a> <span class="f">(</span><a href="cpu.c_macros_ref.html#_X19HRlBfV0FJVF8w"><span class="b">__GFP_WAIT</span></a><span class="f">|</span><a href="cpu.c_macros_noref.html#_X19HRlBfSElHSF8w"><span class="b">__GFP_HIGH</span></a><span class="f">|</span><a href="cpu.c_macros_ref.html#_X19HRlBfSU9fMA__"><span class="b">__GFP_IO</span></a><span class="f">|</span><a href="cpu.c_macros_ref.html#_X19HRlBfRlNfMA__"><span class="b">__GFP_FS</span></a><span class="f">|\
</span>            <a href="cpu.c_macros_noref.html#_X19HRlBfTk9XQVJOXzA_"><span class="b">__GFP_NOWARN</span></a><span class="f">|</span><a href="cpu.c_macros_noref.html#_X19HRlBfUkVQRUFUXzA_"><span class="b">__GFP_REPEAT</span></a><span class="f">|</span><a href="cpu.c_macros_noref.html#_X19HRlBfTk9GQUlMXzA_"><span class="b">__GFP_NOFAIL</span></a><span class="f">|\
</span>            <a href="cpu.c_macros_ref.html#_X19HRlBfTk9SRVRSWV8w"><span class="b">__GFP_NORETRY</span></a><span class="f">|</span><a href="cpu.c_macros_noref.html#_X19HRlBfTUVNQUxMT0NfMA__"><span class="b">__GFP_MEMALLOC</span></a><span class="f">|</span><a href="cpu.c_macros_noref.html#_X19HRlBfTk9NRU1BTExPQ18w"><span class="b">__GFP_NOMEMALLOC</span></a><span class="f">)</span>
<a name="138" /><span class="Maybe">     138:</span> 
<a name="139" /><span class="Maybe">     139:</span> <span class="k">/* Control slab gfp mask during early boot */</span>
<a name="140" /><span class="Maybe">     140:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_R0ZQX0JPT1RfTUFTS18w"><span class="b">GFP_BOOT_MASK</span></a> <span class="f">(</span><a href="cpu.c_macros_noref.html#_X19HRlBfQklUU19NQVNLXzA_"><span class="b">__GFP_BITS_MASK</span></a> <span class="f">&amp;</span> <span class="f">~</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_X19HRlBfV0FJVF8w"><span class="b">__GFP_WAIT</span></a><span class="f">|</span><a href="cpu.c_macros_ref.html#_X19HRlBfSU9fMA__"><span class="b">__GFP_IO</span></a><span class="f">|</span><a href="cpu.c_macros_ref.html#_X19HRlBfRlNfMA__"><span class="b">__GFP_FS</span></a><span class="f">)</span><span class="f">)</span>
<a name="141" /><span class="Maybe">     141:</span> 
<a name="142" /><span class="Maybe">     142:</span> <span class="k">/* Control allocation constraints */</span>
<a name="143" /><span class="Maybe">     143:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_R0ZQX0NPTlNUUkFJTlRfTUFTS18w"><span class="b">GFP_CONSTRAINT_MASK</span></a> <span class="f">(</span><a href="cpu.c_macros_noref.html#_X19HRlBfSEFSRFdBTExfMA__"><span class="b">__GFP_HARDWALL</span></a><span class="f">|</span><a href="cpu.c_macros_ref.html#_X19HRlBfVEhJU05PREVfMA__"><span class="b">__GFP_THISNODE</span></a><span class="f">)</span>
<a name="144" /><span class="Maybe">     144:</span> 
<a name="145" /><span class="Maybe">     145:</span> <span class="k">/* Do not use these with a slab allocator */</span>
<a name="146" /><span class="Maybe">     146:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_R0ZQX1NMQUJfQlVHX01BU0tfMA__"><span class="b">GFP_SLAB_BUG_MASK</span></a> <span class="f">(</span><a href="cpu.c_macros_ref.html#_X19HRlBfRE1BMzJfMA__"><span class="b">__GFP_DMA32</span></a><span class="f">|</span><a href="cpu.c_macros_ref.html#_X19HRlBfSElHSE1FTV8w"><span class="b">__GFP_HIGHMEM</span></a><span class="f">|</span><span class="f">~</span><a href="cpu.c_macros_noref.html#_X19HRlBfQklUU19NQVNLXzA_"><span class="b">__GFP_BITS_MASK</span></a><span class="f">)</span>
<a name="147" /><span class="Maybe">     147:</span> 
<a name="148" /><span class="Maybe">     148:</span> <span class="k">/* Flag - indicates that the buffer will be suitable for DMA.  Ignored on some</span>
<a name="149" /><span class="Maybe">     149:</span> <span class="k">   platforms, used as appropriate on others */</span>
<a name="150" /><span class="Maybe">     150:</span> 
<a name="151" /><span class="Maybe">     151:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_R0ZQX0RNQV8w"><span class="b">GFP_DMA</span></a>        <a href="cpu.c_macros_ref.html#_X19HRlBfRE1BXzA_"><span class="b">__GFP_DMA</span></a>
<a name="152" /><span class="Maybe">     152:</span> 
<a name="153" /><span class="Maybe">     153:</span> <span class="k">/* 4GB DMA on some platforms */</span>
<a name="154" /><span class="Maybe">     154:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_R0ZQX0RNQTMyXzA_"><span class="b">GFP_DMA32</span></a>    <a href="cpu.c_macros_ref.html#_X19HRlBfRE1BMzJfMA__"><span class="b">__GFP_DMA32</span></a>
<a name="155" /><span class="Maybe">     155:</span> 
<a name="156" /><span class="Maybe">     156:</span> <span class="k">/* Convert GFP flags to their corresponding migrate type */</span>
<a name="157" /><span class="Maybe">     157:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">allocflags_to_migratetype</span><span class="f">(</span><span class="b">gfp_t</span> <span class="b">gfp_flags</span><span class="f">)</span>
<a name="158" /><span class="Maybe">     158:</span> <span class="f">{</span>
<a name="159" /><span class="Maybe">     159:</span>     <a href="cpu.c_macros_ref.html#_V0FSTl9PTl8w"><span class="b">WARN_ON</span></a><span class="f">(</span><span class="f">(</span><span class="b">gfp_flags</span> <span class="f">&amp;</span> <a href="cpu.c_macros_ref.html#_R0ZQX01PVkFCTEVfTUFTS18w"><span class="b">GFP_MOVABLE_MASK</span></a><span class="f">)</span> <span class="f">==</span> <a href="cpu.c_macros_ref.html#_R0ZQX01PVkFCTEVfTUFTS18w"><span class="b">GFP_MOVABLE_MASK</span></a><span class="f">)</span><span class="f">;</span>
<a name="160" /><span class="Maybe">     160:</span> 
<a name="161" /><span class="Maybe">     161:</span>     <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_dW5saWtlbHlfMA__"><span class="b">unlikely</span></a><span class="f">(</span><span class="b">page_group_by_mobility_disabled</span><span class="f">)</span><span class="f">)</span>
<a name="162" /><span class="Maybe">     162:</span>         <span class="m">return</span> <span class="b">MIGRATE_UNMOVABLE</span><span class="f">;</span>
<a name="163" /><span class="Maybe">     163:</span> 
<a name="164" /><span class="Maybe">     164:</span>     <span class="k">/* Group based on mobility */</span>
<a name="165" /><span class="Maybe">     165:</span>     <span class="m">return</span> <span class="f">(</span><span class="f">(</span><span class="f">(</span><span class="b">gfp_flags</span> <span class="f">&amp;</span> <a href="cpu.c_macros_ref.html#_X19HRlBfTU9WQUJMRV8w"><span class="b">__GFP_MOVABLE</span></a><span class="f">)</span> <span class="f">!=</span> <span class="c">0</span><span class="f">)</span> <span class="f">&lt;&lt;</span> <span class="c">1</span><span class="f">)</span> <span class="f">|</span>
<a name="166" /><span class="Maybe">     166:</span>         <span class="f">(</span><span class="f">(</span><span class="b">gfp_flags</span> <span class="f">&amp;</span> <a href="cpu.c_macros_ref.html#_X19HRlBfUkVDTEFJTUFCTEVfMA__"><span class="b">__GFP_RECLAIMABLE</span></a><span class="f">)</span> <span class="f">!=</span> <span class="c">0</span><span class="f">)</span><span class="f">;</span>
<a name="167" /><span class="Maybe">     167:</span> <span class="f">}</span>
<a name="168" /><span class="Maybe">     168:</span> 
<a name="169" /><span class="False">     169:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_HIGHMEM</span>
<a name="170" /><span class="False">     170:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_T1BUX1pPTkVfSElHSE1FTV8w"><span class="b">OPT_ZONE_HIGHMEM</span></a> <span class="b">ZONE_HIGHMEM</span>
<a name="171" /><span class="Maybe">     171:</span> <span class="f">#</span><span class="n">else</span>
<a name="172" /><span class="Maybe">     172:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_T1BUX1pPTkVfSElHSE1FTV8w"><span class="b">OPT_ZONE_HIGHMEM</span></a> <span class="b">ZONE_NORMAL</span>
<a name="173" /><span class="Maybe">     173:</span> <span class="f">#</span><span class="n">endif</span>
<a name="174" /><span class="Maybe">     174:</span> 
<a name="175" /><span class="Maybe">     175:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX1pPTkVfRE1BXzA_"><span class="b">CONFIG_ZONE_DMA</span></a>
<a name="176" /><span class="Maybe">     176:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_T1BUX1pPTkVfRE1BXzA_"><span class="b">OPT_ZONE_DMA</span></a> <span class="b">ZONE_DMA</span>
<a name="177" /><span class="False">     177:</span> <span class="f">#</span><span class="n">else</span>
<a name="178" /><span class="False">     178:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_T1BUX1pPTkVfRE1BXzA_"><span class="b">OPT_ZONE_DMA</span></a> <span class="b">ZONE_NORMAL</span>
<a name="179" /><span class="Maybe">     179:</span> <span class="f">#</span><span class="n">endif</span>
<a name="180" /><span class="Maybe">     180:</span> 
<a name="181" /><span class="Maybe">     181:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX1pPTkVfRE1BMzJfMA__"><span class="b">CONFIG_ZONE_DMA32</span></a>
<a name="182" /><span class="Maybe">     182:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_T1BUX1pPTkVfRE1BMzJfMA__"><span class="b">OPT_ZONE_DMA32</span></a> <span class="b">ZONE_DMA32</span>
<a name="183" /><span class="False">     183:</span> <span class="f">#</span><span class="n">else</span>
<a name="184" /><span class="False">     184:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_T1BUX1pPTkVfRE1BMzJfMA__"><span class="b">OPT_ZONE_DMA32</span></a> <span class="b">ZONE_NORMAL</span>
<a name="185" /><span class="Maybe">     185:</span> <span class="f">#</span><span class="n">endif</span>
<a name="186" /><span class="Maybe">     186:</span> 
<a name="187" /><span class="Maybe">     187:</span> <span class="k">/*</span>
<a name="188" /><span class="Maybe">     188:</span> <span class="k"> * GFP_ZONE_TABLE is a word size bitstring that is used for looking up the</span>
<a name="189" /><span class="Maybe">     189:</span> <span class="k"> * zone to use given the lowest 4 bits of gfp_t. Entries are ZONE_SHIFT long</span>
<a name="190" /><span class="Maybe">     190:</span> <span class="k"> * and there are 16 of them to cover all possible combinations of</span>
<a name="191" /><span class="Maybe">     191:</span> <span class="k"> * __GFP_DMA, __GFP_DMA32, __GFP_MOVABLE and __GFP_HIGHMEM.</span>
<a name="192" /><span class="Maybe">     192:</span> <span class="k"> *</span>
<a name="193" /><span class="Maybe">     193:</span> <span class="k"> * The zone fallback order is MOVABLE=&gt;HIGHMEM=&gt;NORMAL=&gt;DMA32=&gt;DMA.</span>
<a name="194" /><span class="Maybe">     194:</span> <span class="k"> * But GFP_MOVABLE is not only a zone specifier but also an allocation</span>
<a name="195" /><span class="Maybe">     195:</span> <span class="k"> * policy. Therefore __GFP_MOVABLE plus another zone selector is valid.</span>
<a name="196" /><span class="Maybe">     196:</span> <span class="k"> * Only 1 bit of the lowest 3 bits (DMA,DMA32,HIGHMEM) can be set to &quot;1&quot;.</span>
<a name="197" /><span class="Maybe">     197:</span> <span class="k"> *</span>
<a name="198" /><span class="Maybe">     198:</span> <span class="k"> *       bit       result</span>
<a name="199" /><span class="Maybe">     199:</span> <span class="k"> *       =================</span>
<a name="200" /><span class="Maybe">     200:</span> <span class="k"> *       0x0    =&gt; NORMAL</span>
<a name="201" /><span class="Maybe">     201:</span> <span class="k"> *       0x1    =&gt; DMA or NORMAL</span>
<a name="202" /><span class="Maybe">     202:</span> <span class="k"> *       0x2    =&gt; HIGHMEM or NORMAL</span>
<a name="203" /><span class="Maybe">     203:</span> <span class="k"> *       0x3    =&gt; BAD (DMA+HIGHMEM)</span>
<a name="204" /><span class="Maybe">     204:</span> <span class="k"> *       0x4    =&gt; DMA32 or DMA or NORMAL</span>
<a name="205" /><span class="Maybe">     205:</span> <span class="k"> *       0x5    =&gt; BAD (DMA+DMA32)</span>
<a name="206" /><span class="Maybe">     206:</span> <span class="k"> *       0x6    =&gt; BAD (HIGHMEM+DMA32)</span>
<a name="207" /><span class="Maybe">     207:</span> <span class="k"> *       0x7    =&gt; BAD (HIGHMEM+DMA32+DMA)</span>
<a name="208" /><span class="Maybe">     208:</span> <span class="k"> *       0x8    =&gt; NORMAL (MOVABLE+0)</span>
<a name="209" /><span class="Maybe">     209:</span> <span class="k"> *       0x9    =&gt; DMA or NORMAL (MOVABLE+DMA)</span>
<a name="210" /><span class="Maybe">     210:</span> <span class="k"> *       0xa    =&gt; MOVABLE (Movable is valid only if HIGHMEM is set too)</span>
<a name="211" /><span class="Maybe">     211:</span> <span class="k"> *       0xb    =&gt; BAD (MOVABLE+HIGHMEM+DMA)</span>
<a name="212" /><span class="Maybe">     212:</span> <span class="k"> *       0xc    =&gt; DMA32 (MOVABLE+DMA32)</span>
<a name="213" /><span class="Maybe">     213:</span> <span class="k"> *       0xd    =&gt; BAD (MOVABLE+DMA32+DMA)</span>
<a name="214" /><span class="Maybe">     214:</span> <span class="k"> *       0xe    =&gt; BAD (MOVABLE+DMA32+HIGHMEM)</span>
<a name="215" /><span class="Maybe">     215:</span> <span class="k"> *       0xf    =&gt; BAD (MOVABLE+DMA32+HIGHMEM+DMA)</span>
<a name="216" /><span class="Maybe">     216:</span> <span class="k"> *</span>
<a name="217" /><span class="Maybe">     217:</span> <span class="k"> * ZONES_SHIFT must be &lt;= 2 on 32 bit platforms.</span>
<a name="218" /><span class="Maybe">     218:</span> <span class="k"> */</span>
<a name="219" /><span class="Maybe">     219:</span> 
<a name="220" /><span class="False">     220:</span> <span class="f">#</span><span class="n">if</span> <span class="c">16</span> <span class="f">*</span> <a href="cpu.c_macros_ref.html#_Wk9ORVNfU0hJRlRfMA__"><span class="b">ZONES_SHIFT</span></a> <span class="f">&gt;</span> <a href="cpu.c_macros_ref.html#_QklUU19QRVJfTE9OR18w"><span class="b">BITS_PER_LONG</span></a>
<a name="221" /><span class="False">     221:</span> <span class="f">#</span><span class="n">error</span> <a href="cpu.c_macros_ref.html#_Wk9ORVNfU0hJRlRfMA__"><span class="b">ZONES_SHIFT</span></a> <span class="b">too</span> <span class="b">large</span> <span class="b">to</span> <span class="b">create</span> <a href="cpu.c_macros_ref.html#_R0ZQX1pPTkVfVEFCTEVfMA__"><span class="b">GFP_ZONE_TABLE</span></a> <span class="b">integer</span>
<a name="222" /><span class="Maybe">     222:</span> <span class="f">#</span><span class="n">endif</span>
<a name="223" /><span class="Maybe">     223:</span> 
<a name="224" /><span class="Maybe">     224:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_R0ZQX1pPTkVfVEFCTEVfMA__"><span class="b">GFP_ZONE_TABLE</span></a> <span class="f">(</span> \
<a name="225" /><span class="Maybe">     225:</span>     <span class="f">(</span><span class="b">ZONE_NORMAL</span> <span class="f">&lt;&lt;</span> <span class="c">0</span> <span class="f">*</span> <a href="cpu.c_macros_ref.html#_Wk9ORVNfU0hJRlRfMA__"><span class="b">ZONES_SHIFT</span></a><span class="f">)</span>                      \
<a name="226" /><span class="Maybe">     226:</span>     <span class="f">|</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_T1BUX1pPTkVfRE1BXzA_"><span class="b">OPT_ZONE_DMA</span></a> <span class="f">&lt;&lt;</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX0RNQV8w"><span class="b">___GFP_DMA</span></a> <span class="f">*</span> <a href="cpu.c_macros_ref.html#_Wk9ORVNfU0hJRlRfMA__"><span class="b">ZONES_SHIFT</span></a><span class="f">)</span>                  \
<a name="227" /><span class="Maybe">     227:</span>     <span class="f">|</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_T1BUX1pPTkVfSElHSE1FTV8w"><span class="b">OPT_ZONE_HIGHMEM</span></a> <span class="f">&lt;&lt;</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX0hJR0hNRU1fMA__"><span class="b">___GFP_HIGHMEM</span></a> <span class="f">*</span> <a href="cpu.c_macros_ref.html#_Wk9ORVNfU0hJRlRfMA__"><span class="b">ZONES_SHIFT</span></a><span class="f">)</span>              \
<a name="228" /><span class="Maybe">     228:</span>     <span class="f">|</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_T1BUX1pPTkVfRE1BMzJfMA__"><span class="b">OPT_ZONE_DMA32</span></a> <span class="f">&lt;&lt;</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX0RNQTMyXzA_"><span class="b">___GFP_DMA32</span></a> <span class="f">*</span> <a href="cpu.c_macros_ref.html#_Wk9ORVNfU0hJRlRfMA__"><span class="b">ZONES_SHIFT</span></a><span class="f">)</span>              \
<a name="229" /><span class="Maybe">     229:</span>     <span class="f">|</span> <span class="f">(</span><span class="b">ZONE_NORMAL</span> <span class="f">&lt;&lt;</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX01PVkFCTEVfMA__"><span class="b">___GFP_MOVABLE</span></a> <span class="f">*</span> <a href="cpu.c_macros_ref.html#_Wk9ORVNfU0hJRlRfMA__"><span class="b">ZONES_SHIFT</span></a><span class="f">)</span>                  \
<a name="230" /><span class="Maybe">     230:</span>     <span class="f">|</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_T1BUX1pPTkVfRE1BXzA_"><span class="b">OPT_ZONE_DMA</span></a> <span class="f">&lt;&lt;</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_X19fR0ZQX01PVkFCTEVfMA__"><span class="b">___GFP_MOVABLE</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX0RNQV8w"><span class="b">___GFP_DMA</span></a><span class="f">)</span> <span class="f">*</span> <a href="cpu.c_macros_ref.html#_Wk9ORVNfU0hJRlRfMA__"><span class="b">ZONES_SHIFT</span></a><span class="f">)</span>          \
<a name="231" /><span class="Maybe">     231:</span>     <span class="f">|</span> <span class="f">(</span><span class="b">ZONE_MOVABLE</span> <span class="f">&lt;&lt;</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_X19fR0ZQX01PVkFCTEVfMA__"><span class="b">___GFP_MOVABLE</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX0hJR0hNRU1fMA__"><span class="b">___GFP_HIGHMEM</span></a><span class="f">)</span> <span class="f">*</span> <a href="cpu.c_macros_ref.html#_Wk9ORVNfU0hJRlRfMA__"><span class="b">ZONES_SHIFT</span></a><span class="f">)</span>   \
<a name="232" /><span class="Maybe">     232:</span>     <span class="f">|</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_T1BUX1pPTkVfRE1BMzJfMA__"><span class="b">OPT_ZONE_DMA32</span></a> <span class="f">&lt;&lt;</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_X19fR0ZQX01PVkFCTEVfMA__"><span class="b">___GFP_MOVABLE</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX0RNQTMyXzA_"><span class="b">___GFP_DMA32</span></a><span class="f">)</span> <span class="f">*</span> <a href="cpu.c_macros_ref.html#_Wk9ORVNfU0hJRlRfMA__"><span class="b">ZONES_SHIFT</span></a><span class="f">)</span>   \
<a name="233" /><span class="Maybe">     233:</span> <span class="f">)</span>
<a name="234" /><span class="Maybe">     234:</span> 
<a name="235" /><span class="Maybe">     235:</span> <span class="k">/*</span>
<a name="236" /><span class="Maybe">     236:</span> <span class="k"> * GFP_ZONE_BAD is a bitmap for all combinations of __GFP_DMA, __GFP_DMA32</span>
<a name="237" /><span class="Maybe">     237:</span> <span class="k"> * __GFP_HIGHMEM and __GFP_MOVABLE that are not permitted. One flag per</span>
<a name="238" /><span class="Maybe">     238:</span> <span class="k"> * entry starting with bit 0. Bit is set if the combination is not</span>
<a name="239" /><span class="Maybe">     239:</span> <span class="k"> * allowed.</span>
<a name="240" /><span class="Maybe">     240:</span> <span class="k"> */</span>
<a name="241" /><span class="Maybe">     241:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_R0ZQX1pPTkVfQkFEXzA_"><span class="b">GFP_ZONE_BAD</span></a> <span class="f">(</span> \
<a name="242" /><span class="Maybe">     242:</span>     <span class="c">1</span> <span class="f">&lt;&lt;</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_X19fR0ZQX0RNQV8w"><span class="b">___GFP_DMA</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX0hJR0hNRU1fMA__"><span class="b">___GFP_HIGHMEM</span></a><span class="f">)</span>                      \
<a name="243" /><span class="Maybe">     243:</span>     <span class="f">|</span> <span class="c">1</span> <span class="f">&lt;&lt;</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_X19fR0ZQX0RNQV8w"><span class="b">___GFP_DMA</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX0RNQTMyXzA_"><span class="b">___GFP_DMA32</span></a><span class="f">)</span>                      \
<a name="244" /><span class="Maybe">     244:</span>     <span class="f">|</span> <span class="c">1</span> <span class="f">&lt;&lt;</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_X19fR0ZQX0RNQTMyXzA_"><span class="b">___GFP_DMA32</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX0hJR0hNRU1fMA__"><span class="b">___GFP_HIGHMEM</span></a><span class="f">)</span>                      \
<a name="245" /><span class="Maybe">     245:</span>     <span class="f">|</span> <span class="c">1</span> <span class="f">&lt;&lt;</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_X19fR0ZQX0RNQV8w"><span class="b">___GFP_DMA</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX0RNQTMyXzA_"><span class="b">___GFP_DMA32</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX0hJR0hNRU1fMA__"><span class="b">___GFP_HIGHMEM</span></a><span class="f">)</span>              \
<a name="246" /><span class="Maybe">     246:</span>     <span class="f">|</span> <span class="c">1</span> <span class="f">&lt;&lt;</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_X19fR0ZQX01PVkFCTEVfMA__"><span class="b">___GFP_MOVABLE</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX0hJR0hNRU1fMA__"><span class="b">___GFP_HIGHMEM</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX0RNQV8w"><span class="b">___GFP_DMA</span></a><span class="f">)</span>              \
<a name="247" /><span class="Maybe">     247:</span>     <span class="f">|</span> <span class="c">1</span> <span class="f">&lt;&lt;</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_X19fR0ZQX01PVkFCTEVfMA__"><span class="b">___GFP_MOVABLE</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX0RNQTMyXzA_"><span class="b">___GFP_DMA32</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX0RNQV8w"><span class="b">___GFP_DMA</span></a><span class="f">)</span>              \
<a name="248" /><span class="Maybe">     248:</span>     <span class="f">|</span> <span class="c">1</span> <span class="f">&lt;&lt;</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_X19fR0ZQX01PVkFCTEVfMA__"><span class="b">___GFP_MOVABLE</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX0RNQTMyXzA_"><span class="b">___GFP_DMA32</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX0hJR0hNRU1fMA__"><span class="b">___GFP_HIGHMEM</span></a><span class="f">)</span>              \
<a name="249" /><span class="Maybe">     249:</span>     <span class="f">|</span> <span class="c">1</span> <span class="f">&lt;&lt;</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_X19fR0ZQX01PVkFCTEVfMA__"><span class="b">___GFP_MOVABLE</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX0RNQTMyXzA_"><span class="b">___GFP_DMA32</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX0RNQV8w"><span class="b">___GFP_DMA</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19fR0ZQX0hJR0hNRU1fMA__"><span class="b">___GFP_HIGHMEM</span></a><span class="f">)</span>  \
<a name="250" /><span class="Maybe">     250:</span> <span class="f">)</span>
<a name="251" /><span class="Maybe">     251:</span> 
<a name="252" /><span class="Maybe">     252:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">enum</span> <span class="b">zone_type</span> <span class="b">gfp_zone</span><span class="f">(</span><span class="b">gfp_t</span> <span class="b">flags</span><span class="f">)</span>
<a name="253" /><span class="Maybe">     253:</span> <span class="f">{</span>
<a name="254" /><span class="Maybe">     254:</span>     <span class="m">enum</span> <span class="b">zone_type</span> <span class="b">z</span><span class="f">;</span>
<a name="255" /><span class="Maybe">     255:</span>     <span class="m">int</span> <span class="b">bit</span> <span class="f">=</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_X19mb3JjZV8w"><span class="b">__force</span></a> <span class="m">int</span><span class="f">)</span> <span class="f">(</span><span class="b">flags</span> <span class="f">&amp;</span> <a href="cpu.c_macros_ref.html#_R0ZQX1pPTkVNQVNLXzA_"><span class="b">GFP_ZONEMASK</span></a><span class="f">)</span><span class="f">;</span>
<a name="256" /><span class="Maybe">     256:</span> 
<a name="257" /><span class="Maybe">     257:</span>     <span class="b">z</span> <span class="f">=</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_R0ZQX1pPTkVfVEFCTEVfMA__"><span class="b">GFP_ZONE_TABLE</span></a> <span class="f">&gt;&gt;</span> <span class="f">(</span><span class="b">bit</span> <span class="f">*</span> <a href="cpu.c_macros_ref.html#_Wk9ORVNfU0hJRlRfMA__"><span class="b">ZONES_SHIFT</span></a><span class="f">)</span><span class="f">)</span> <span class="f">&amp;</span>
<a name="258" /><span class="Maybe">     258:</span>                      <span class="f">(</span><span class="f">(</span><span class="c">1</span> <span class="f">&lt;&lt;</span> <a href="cpu.c_macros_ref.html#_Wk9ORVNfU0hJRlRfMA__"><span class="b">ZONES_SHIFT</span></a><span class="f">)</span> <span class="f">-</span> <span class="c">1</span><span class="f">)</span><span class="f">;</span>
<a name="259" /><span class="Maybe">     259:</span>     <a href="cpu.c_macros_ref.html#_Vk1fQlVHX09OXzA_"><span class="b">VM_BUG_ON</span></a><span class="f">(</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_R0ZQX1pPTkVfQkFEXzA_"><span class="b">GFP_ZONE_BAD</span></a> <span class="f">&gt;&gt;</span> <span class="b">bit</span><span class="f">)</span> <span class="f">&amp;</span> <span class="c">1</span><span class="f">)</span><span class="f">;</span>
<a name="260" /><span class="Maybe">     260:</span>     <span class="m">return</span> <span class="b">z</span><span class="f">;</span>
<a name="261" /><span class="Maybe">     261:</span> <span class="f">}</span>
<a name="262" /><span class="Maybe">     262:</span> 
<a name="263" /><span class="Maybe">     263:</span> <span class="k">/*</span>
<a name="264" /><span class="Maybe">     264:</span> <span class="k"> * There is only one page-allocator function, and two main namespaces to</span>
<a name="265" /><span class="Maybe">     265:</span> <span class="k"> * it. The alloc_page*() variants return &apos;struct page *&apos; and as such</span>
<a name="266" /><span class="Maybe">     266:</span> <span class="k"> * can allocate highmem pages, the *get*page*() variants return</span>
<a name="267" /><span class="Maybe">     267:</span> <span class="k"> * virtual kernel addresses to the allocated page(s).</span>
<a name="268" /><span class="Maybe">     268:</span> <span class="k"> */</span>
<a name="269" /><span class="Maybe">     269:</span> 
<a name="270" /><span class="Maybe">     270:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">gfp_zonelist</span><span class="f">(</span><span class="b">gfp_t</span> <span class="b">flags</span><span class="f">)</span>
<a name="271" /><span class="Maybe">     271:</span> <span class="f">{</span>
<a name="272" /><span class="Maybe">     272:</span>     <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_SVNfRU5BQkxFRF8w"><span class="b">IS_ENABLED</span></a><span class="f">(</span><a href="cpu.c_macros_ref.html#_Q09ORklHX05VTUFfMA__"><span class="b">CONFIG_NUMA</span></a><span class="f">)</span> <span class="f">&amp;&amp;</span> <a href="cpu.c_macros_ref.html#_dW5saWtlbHlfMA__"><span class="b">unlikely</span></a><span class="f">(</span><span class="b">flags</span> <span class="f">&amp;</span> <a href="cpu.c_macros_ref.html#_X19HRlBfVEhJU05PREVfMA__"><span class="b">__GFP_THISNODE</span></a><span class="f">)</span><span class="f">)</span>
<a name="273" /><span class="Maybe">     273:</span>         <span class="m">return</span> <span class="c">1</span><span class="f">;</span>
<a name="274" /><span class="Maybe">     274:</span> 
<a name="275" /><span class="Maybe">     275:</span>     <span class="m">return</span> <span class="c">0</span><span class="f">;</span>
<a name="276" /><span class="Maybe">     276:</span> <span class="f">}</span>
<a name="277" /><span class="Maybe">     277:</span> 
<a name="278" /><span class="Maybe">     278:</span> <span class="k">/*</span>
<a name="279" /><span class="Maybe">     279:</span> <span class="k"> * We get the zone list from the current node and the gfp_mask.</span>
<a name="280" /><span class="Maybe">     280:</span> <span class="k"> * This zone list contains a maximum of MAXNODES*MAX_NR_ZONES zones.</span>
<a name="281" /><span class="Maybe">     281:</span> <span class="k"> * There are two zonelists per node, one for all zones with memory and</span>
<a name="282" /><span class="Maybe">     282:</span> <span class="k"> * one containing just zones from the node the zonelist belongs to.</span>
<a name="283" /><span class="Maybe">     283:</span> <span class="k"> *</span>
<a name="284" /><span class="Maybe">     284:</span> <span class="k"> * For the normal case of non-DISCONTIGMEM systems the NODE_DATA() gets</span>
<a name="285" /><span class="Maybe">     285:</span> <span class="k"> * optimized to &amp;contig_page_data at compile-time.</span>
<a name="286" /><span class="Maybe">     286:</span> <span class="k"> */</span>
<a name="287" /><span class="Maybe">     287:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">struct</span> <span class="b">zonelist</span> <span class="f">*</span><span class="b">node_zonelist</span><span class="f">(</span><span class="m">int</span> <span class="b">nid</span><span class="f">,</span> <span class="b">gfp_t</span> <span class="b">flags</span><span class="f">)</span>
<a name="288" /><span class="Maybe">     288:</span> <span class="f">{</span>
<a name="289" /><span class="Maybe">     289:</span>     <span class="m">return</span> <a href="cpu.c_macros_ref.html#_Tk9ERV9EQVRBXzA_"><span class="b">NODE_DATA</span></a><span class="f">(</span><span class="b">nid</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">node_zonelists</span> <span class="f">+</span> <span class="b">gfp_zonelist</span><span class="f">(</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>
<a name="290" /><span class="Maybe">     290:</span> <span class="f">}</span>
<a name="291" /><span class="Maybe">     291:</span> 
<a name="292" /><span class="Maybe">     292:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">HAVE_ARCH_FREE_PAGE</span>
<a name="293" /><span class="Maybe">     293:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">arch_free_page</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">,</span> <span class="m">int</span> <span class="b">order</span><span class="f">)</span> <span class="f">{</span> <span class="f">}</span>
<a name="294" /><span class="Maybe">     294:</span> <span class="f">#</span><span class="n">endif</span>
<a name="295" /><span class="Maybe">     295:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">HAVE_ARCH_ALLOC_PAGE</span>
<a name="296" /><span class="Maybe">     296:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">arch_alloc_page</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">,</span> <span class="m">int</span> <span class="b">order</span><span class="f">)</span> <span class="f">{</span> <span class="f">}</span>
<a name="297" /><span class="Maybe">     297:</span> <span class="f">#</span><span class="n">endif</span>
<a name="298" /><span class="Maybe">     298:</span> 
<a name="299" /><span class="Maybe">     299:</span> <span class="m">struct</span> <span class="b">page</span> <span class="f">*</span>
<a name="300" /><span class="Maybe">     300:</span> <span class="b">__alloc_pages_nodemask</span><span class="f">(</span><span class="b">gfp_t</span> <span class="b">gfp_mask</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">order</span><span class="f">,</span>
<a name="301" /><span class="Maybe">     301:</span>                <span class="m">struct</span> <span class="b">zonelist</span> <span class="f">*</span><span class="b">zonelist</span><span class="f">,</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">nodemask</span><span class="f">)</span><span class="f">;</span>
<a name="302" /><span class="Maybe">     302:</span> 
<a name="303" /><span class="Maybe">     303:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">struct</span> <span class="b">page</span> <span class="f">*</span>
<a name="304" /><span class="Maybe">     304:</span> <span class="b">__alloc_pages</span><span class="f">(</span><span class="b">gfp_t</span> <span class="b">gfp_mask</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">order</span><span class="f">,</span>
<a name="305" /><span class="Maybe">     305:</span>         <span class="m">struct</span> <span class="b">zonelist</span> <span class="f">*</span><span class="b">zonelist</span><span class="f">)</span>
<a name="306" /><span class="Maybe">     306:</span> <span class="f">{</span>
<a name="307" /><span class="Maybe">     307:</span>     <span class="m">return</span> <span class="b">__alloc_pages_nodemask</span><span class="f">(</span><span class="b">gfp_mask</span><span class="f">,</span> <span class="b">order</span><span class="f">,</span> <span class="b">zonelist</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TlVMTF8w"><span class="b">NULL</span></a><span class="f">)</span><span class="f">;</span>
<a name="308" /><span class="Maybe">     308:</span> <span class="f">}</span>
<a name="309" /><span class="Maybe">     309:</span> 
<a name="310" /><span class="Maybe">     310:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">alloc_pages_node</span><span class="f">(</span><span class="m">int</span> <span class="b">nid</span><span class="f">,</span> <span class="b">gfp_t</span> <span class="b">gfp_mask</span><span class="f">,</span>
<a name="311" /><span class="Maybe">     311:</span>                         <span class="m">unsigned</span> <span class="m">int</span> <span class="b">order</span><span class="f">)</span>
<a name="312" /><span class="Maybe">     312:</span> <span class="f">{</span>
<a name="313" /><span class="Maybe">     313:</span>     <span class="k">/* Unknown node is current node */</span>
<a name="314" /><span class="Maybe">     314:</span>     <span class="m">if</span> <span class="f">(</span><span class="b">nid</span> <span class="f">&lt;</span> <span class="c">0</span><span class="f">)</span>
<a name="315" /><span class="Maybe">     315:</span>         <span class="b">nid</span> <span class="f">=</span> <span class="b">numa_node_id</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="316" /><span class="Maybe">     316:</span> 
<a name="317" /><span class="Maybe">     317:</span>     <span class="m">return</span> <span class="b">__alloc_pages</span><span class="f">(</span><span class="b">gfp_mask</span><span class="f">,</span> <span class="b">order</span><span class="f">,</span> <span class="b">node_zonelist</span><span class="f">(</span><span class="b">nid</span><span class="f">,</span> <span class="b">gfp_mask</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="318" /><span class="Maybe">     318:</span> <span class="f">}</span>
<a name="319" /><span class="Maybe">     319:</span> 
<a name="320" /><span class="Maybe">     320:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">alloc_pages_exact_node</span><span class="f">(</span><span class="m">int</span> <span class="b">nid</span><span class="f">,</span> <span class="b">gfp_t</span> <span class="b">gfp_mask</span><span class="f">,</span>
<a name="321" /><span class="Maybe">     321:</span>                         <span class="m">unsigned</span> <span class="m">int</span> <span class="b">order</span><span class="f">)</span>
<a name="322" /><span class="Maybe">     322:</span> <span class="f">{</span>
<a name="323" /><span class="Maybe">     323:</span>     <a href="cpu.c_macros_ref.html#_Vk1fQlVHX09OXzA_"><span class="b">VM_BUG_ON</span></a><span class="f">(</span><span class="b">nid</span> <span class="f">&lt;</span> <span class="c">0</span> <span class="f">||</span> <span class="b">nid</span> <span class="f">&gt;=</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a> <span class="f">||</span> <span class="f">!</span><a href="cpu.c_macros_ref.html#_bm9kZV9vbmxpbmVfMA__"><span class="b">node_online</span></a><span class="f">(</span><span class="b">nid</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="324" /><span class="Maybe">     324:</span> 
<a name="325" /><span class="Maybe">     325:</span>     <span class="m">return</span> <span class="b">__alloc_pages</span><span class="f">(</span><span class="b">gfp_mask</span><span class="f">,</span> <span class="b">order</span><span class="f">,</span> <span class="b">node_zonelist</span><span class="f">(</span><span class="b">nid</span><span class="f">,</span> <span class="b">gfp_mask</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="326" /><span class="Maybe">     326:</span> <span class="f">}</span>
<a name="327" /><span class="Maybe">     327:</span> 
<a name="328" /><span class="Maybe">     328:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX05VTUFfMA__"><span class="b">CONFIG_NUMA</span></a>
<a name="329" /><span class="Maybe">     329:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">alloc_pages_current</span><span class="f">(</span><span class="b">gfp_t</span> <span class="b">gfp_mask</span><span class="f">,</span> <span class="m">unsigned</span> <span class="b">order</span><span class="f">)</span><span class="f">;</span>
<a name="330" /><span class="Maybe">     330:</span> 
<a name="331" /><span class="Maybe">     331:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">struct</span> <span class="b">page</span> <span class="f">*</span>
<a name="332" /><span class="Maybe">     332:</span> <span class="b">alloc_pages</span><span class="f">(</span><span class="b">gfp_t</span> <span class="b">gfp_mask</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">order</span><span class="f">)</span>
<a name="333" /><span class="Maybe">     333:</span> <span class="f">{</span>
<a name="334" /><span class="Maybe">     334:</span>     <span class="m">return</span> <span class="b">alloc_pages_current</span><span class="f">(</span><span class="b">gfp_mask</span><span class="f">,</span> <span class="b">order</span><span class="f">)</span><span class="f">;</span>
<a name="335" /><span class="Maybe">     335:</span> <span class="f">}</span>
<a name="336" /><span class="Maybe">     336:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">alloc_pages_vma</span><span class="f">(</span><span class="b">gfp_t</span> <span class="b">gfp_mask</span><span class="f">,</span> <span class="m">int</span> <span class="b">order</span><span class="f">,</span>
<a name="337" /><span class="Maybe">     337:</span>             <span class="m">struct</span> <span class="b">vm_area_struct</span> <span class="f">*</span><span class="b">vma</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">addr</span><span class="f">,</span>
<a name="338" /><span class="Maybe">     338:</span>             <span class="m">int</span> <span class="b">node</span><span class="f">)</span><span class="f">;</span>
<a name="339" /><span class="False">     339:</span> <span class="f">#</span><span class="n">else</span>
<a name="340" /><span class="False">     340:</span> <span class="f">#</span><span class="n">define</span> <span class="b">alloc_pages</span><span class="f">(</span><span class="b">gfp_mask</span><span class="f">,</span> <span class="b">order</span><span class="f">)</span> \
<a name="341" /><span class="False">     341:</span>         <span class="b">alloc_pages_node</span><span class="f">(</span><span class="b">numa_node_id</span><span class="f">(</span><span class="f">)</span><span class="f">,</span> <span class="b">gfp_mask</span><span class="f">,</span> <span class="b">order</span><span class="f">)</span>
<a name="342" /><span class="False">     342:</span> <span class="f">#</span><span class="n">define</span> <span class="b">alloc_pages_vma</span><span class="f">(</span><span class="b">gfp_mask</span><span class="f">,</span> <span class="b">order</span><span class="f">,</span> <span class="b">vma</span><span class="f">,</span> <span class="b">addr</span><span class="f">,</span> <span class="b">node</span><span class="f">)</span>    \
<a name="343" /><span class="False">     343:</span>     <span class="b">alloc_pages</span><span class="f">(</span><span class="b">gfp_mask</span><span class="f">,</span> <span class="b">order</span><span class="f">)</span>
<a name="344" /><span class="Maybe">     344:</span> <span class="f">#</span><span class="n">endif</span>
<a name="345" /><span class="Maybe">     345:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_YWxsb2NfcGFnZV8w"><span class="b">alloc_page</span></a><span class="f">(</span><span class="b">gfp_mask</span><span class="f">)</span> <span class="b">alloc_pages</span><span class="f">(</span><span class="b">gfp_mask</span><span class="f">,</span> <span class="c">0</span><span class="f">)</span>
<a name="346" /><span class="Maybe">     346:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_YWxsb2NfcGFnZV92bWFfMA__"><span class="b">alloc_page_vma</span></a><span class="f">(</span><span class="b">gfp_mask</span><span class="f">,</span> <span class="b">vma</span><span class="f">,</span> <span class="b">addr</span><span class="f">)</span>            \
<a name="347" /><span class="Maybe">     347:</span>     <span class="b">alloc_pages_vma</span><span class="f">(</span><span class="b">gfp_mask</span><span class="f">,</span> <span class="c">0</span><span class="f">,</span> <span class="b">vma</span><span class="f">,</span> <span class="b">addr</span><span class="f">,</span> <span class="b">numa_node_id</span><span class="f">(</span><span class="f">)</span><span class="f">)</span>
<a name="348" /><span class="Maybe">     348:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_YWxsb2NfcGFnZV92bWFfbm9kZV8w"><span class="b">alloc_page_vma_node</span></a><span class="f">(</span><span class="b">gfp_mask</span><span class="f">,</span> <span class="b">vma</span><span class="f">,</span> <span class="b">addr</span><span class="f">,</span> <span class="b">node</span><span class="f">)</span>        \
<a name="349" /><span class="Maybe">     349:</span>     <span class="b">alloc_pages_vma</span><span class="f">(</span><span class="b">gfp_mask</span><span class="f">,</span> <span class="c">0</span><span class="f">,</span> <span class="b">vma</span><span class="f">,</span> <span class="b">addr</span><span class="f">,</span> <span class="b">node</span><span class="f">)</span>
<a name="350" /><span class="Maybe">     350:</span> 
<a name="351" /><span class="Maybe">     351:</span> <span class="m">extern</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">__get_free_pages</span><span class="f">(</span><span class="b">gfp_t</span> <span class="b">gfp_mask</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">order</span><span class="f">)</span><span class="f">;</span>
<a name="352" /><span class="Maybe">     352:</span> <span class="m">extern</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">get_zeroed_page</span><span class="f">(</span><span class="b">gfp_t</span> <span class="b">gfp_mask</span><span class="f">)</span><span class="f">;</span>
<a name="353" /><span class="Maybe">     353:</span> 
<a name="354" /><span class="Maybe">     354:</span> <span class="m">void</span> <span class="f">*</span><span class="b">alloc_pages_exact</span><span class="f">(</span><span class="b">size_t</span> <span class="b">size</span><span class="f">,</span> <span class="b">gfp_t</span> <span class="b">gfp_mask</span><span class="f">)</span><span class="f">;</span>
<a name="355" /><span class="Maybe">     355:</span> <span class="m">void</span> <span class="b">free_pages_exact</span><span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="b">virt</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">size</span><span class="f">)</span><span class="f">;</span>
<a name="356" /><span class="Maybe">     356:</span> <span class="k">/* This is different from alloc_pages_exact_node !!! */</span>
<a name="357" /><span class="Maybe">     357:</span> <span class="m">void</span> <span class="f">*</span><span class="b">alloc_pages_exact_nid</span><span class="f">(</span><span class="m">int</span> <span class="b">nid</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">size</span><span class="f">,</span> <span class="b">gfp_t</span> <span class="b">gfp_mask</span><span class="f">)</span><span class="f">;</span>
<a name="358" /><span class="Maybe">     358:</span> 
<a name="359" /><span class="Maybe">     359:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19nZXRfZnJlZV9wYWdlXzA_"><span class="b">__get_free_page</span></a><span class="f">(</span><span class="b">gfp_mask</span><span class="f">)</span> \
<a name="360" /><span class="Maybe">     360:</span>         <span class="b">__get_free_pages</span><span class="f">(</span><span class="f">(</span><span class="b">gfp_mask</span><span class="f">)</span><span class="f">,</span> <span class="c">0</span><span class="f">)</span>
<a name="361" /><span class="Maybe">     361:</span> 
<a name="362" /><span class="Maybe">     362:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19nZXRfZG1hX3BhZ2VzXzA_"><span class="b">__get_dma_pages</span></a><span class="f">(</span><span class="b">gfp_mask</span><span class="f">,</span> <span class="b">order</span><span class="f">)</span> \
<a name="363" /><span class="Maybe">     363:</span>         <span class="b">__get_free_pages</span><span class="f">(</span><span class="f">(</span><span class="b">gfp_mask</span><span class="f">)</span> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_R0ZQX0RNQV8w"><span class="b">GFP_DMA</span></a><span class="f">,</span> <span class="f">(</span><span class="b">order</span><span class="f">)</span><span class="f">)</span>
<a name="364" /><span class="Maybe">     364:</span> 
<a name="365" /><span class="Maybe">     365:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">__free_pages</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">order</span><span class="f">)</span><span class="f">;</span>
<a name="366" /><span class="Maybe">     366:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">free_pages</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">addr</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">order</span><span class="f">)</span><span class="f">;</span>
<a name="367" /><span class="Maybe">     367:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">free_hot_cold_page</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">,</span> <span class="m">int</span> <span class="b">cold</span><span class="f">)</span><span class="f">;</span>
<a name="368" /><span class="Maybe">     368:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">free_hot_cold_page_list</span><span class="f">(</span><span class="m">struct</span> <span class="b">list_head</span> <span class="f">*</span><span class="b">list</span><span class="f">,</span> <span class="m">int</span> <span class="b">cold</span><span class="f">)</span><span class="f">;</span>
<a name="369" /><span class="Maybe">     369:</span> 
<a name="370" /><span class="Maybe">     370:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">__free_memcg_kmem_pages</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">order</span><span class="f">)</span><span class="f">;</span>
<a name="371" /><span class="Maybe">     371:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">free_memcg_kmem_pages</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">addr</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">order</span><span class="f">)</span><span class="f">;</span>
<a name="372" /><span class="Maybe">     372:</span> 
<a name="373" /><span class="Maybe">     373:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19mcmVlX3BhZ2VfMA__"><span class="b">__free_page</span></a><span class="f">(</span><span class="b">page</span><span class="f">)</span> <span class="b">__free_pages</span><span class="f">(</span><span class="f">(</span><span class="b">page</span><span class="f">)</span><span class="f">,</span> <span class="c">0</span><span class="f">)</span>
<a name="374" /><span class="Maybe">     374:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_ZnJlZV9wYWdlXzA_"><span class="b">free_page</span></a><span class="f">(</span><span class="b">addr</span><span class="f">)</span> <span class="b">free_pages</span><span class="f">(</span><span class="f">(</span><span class="b">addr</span><span class="f">)</span><span class="f">,</span> <span class="c">0</span><span class="f">)</span>
<a name="375" /><span class="Maybe">     375:</span> 
<a name="376" /><span class="Maybe">     376:</span> <span class="m">void</span> <span class="b">page_alloc_init</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="377" /><span class="Maybe">     377:</span> <span class="m">void</span> <span class="b">drain_zone_pages</span><span class="f">(</span><span class="m">struct</span> <span class="b">zone</span> <span class="f">*</span><span class="b">zone</span><span class="f">,</span> <span class="m">struct</span> <span class="b">per_cpu_pages</span> <span class="f">*</span><span class="b">pcp</span><span class="f">)</span><span class="f">;</span>
<a name="378" /><span class="Maybe">     378:</span> <span class="m">void</span> <span class="b">drain_all_pages</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="379" /><span class="Maybe">     379:</span> <span class="m">void</span> <span class="b">drain_local_pages</span><span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="b">dummy</span><span class="f">)</span><span class="f">;</span>
<a name="380" /><span class="Maybe">     380:</span> 
<a name="381" /><span class="Maybe">     381:</span> <span class="k">/*</span>
<a name="382" /><span class="Maybe">     382:</span> <span class="k"> * gfp_allowed_mask is set to GFP_BOOT_MASK during early boot to restrict what</span>
<a name="383" /><span class="Maybe">     383:</span> <span class="k"> * GFP flags are used before interrupts are enabled. Once interrupts are</span>
<a name="384" /><span class="Maybe">     384:</span> <span class="k"> * enabled, it is set to __GFP_BITS_MASK while the system is running. During</span>
<a name="385" /><span class="Maybe">     385:</span> <span class="k"> * hibernation, it is used by PM to avoid I/O during memory allocation while</span>
<a name="386" /><span class="Maybe">     386:</span> <span class="k"> * devices are suspended.</span>
<a name="387" /><span class="Maybe">     387:</span> <span class="k"> */</span>
<a name="388" /><span class="Maybe">     388:</span> <span class="m">extern</span> <span class="b">gfp_t</span> <span class="b">gfp_allowed_mask</span><span class="f">;</span>
<a name="389" /><span class="Maybe">     389:</span> 
<a name="390" /><span class="Maybe">     390:</span> <span class="k">/* Returns true if the gfp_mask allows use of ALLOC_NO_WATERMARK */</span>
<a name="391" /><span class="Maybe">     391:</span> <span class="m">bool</span> <span class="b">gfp_pfmemalloc_allowed</span><span class="f">(</span><span class="b">gfp_t</span> <span class="b">gfp_mask</span><span class="f">)</span><span class="f">;</span>
<a name="392" /><span class="Maybe">     392:</span> 
<a name="393" /><span class="Maybe">     393:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">pm_restrict_gfp_mask</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="394" /><span class="Maybe">     394:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">pm_restore_gfp_mask</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="395" /><span class="Maybe">     395:</span> 
<a name="396" /><span class="Maybe">     396:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX1BNX1NMRUVQXzA_"><span class="b">CONFIG_PM_SLEEP</span></a>
<a name="397" /><span class="Maybe">     397:</span> <span class="m">extern</span> <span class="m">bool</span> <span class="b">pm_suspended_storage</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="398" /><span class="False">     398:</span> <span class="f">#</span><span class="n">else</span>
<a name="399" /><span class="False">     399:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">pm_suspended_storage</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="400" /><span class="False">     400:</span> <span class="f">{</span>
<a name="401" /><span class="False">     401:</span>     <span class="m">return</span> <span class="m">false</span><span class="f">;</span>
<a name="402" /><span class="False">     402:</span> <span class="f">}</span>
<a name="403" /><span class="Maybe">     403:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* CONFIG_PM_SLEEP */</span>
<a name="404" /><span class="Maybe">     404:</span> 
<a name="405" /><span class="False">     405:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_CMA</span>
<a name="406" /><span class="False">     406:</span> 
<a name="407" /><span class="False">     407:</span> <span class="k">/* The below functions must be run on a range from a single zone. */</span>
<a name="408" /><span class="False">     408:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">alloc_contig_range</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">start</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">end</span><span class="f">,</span>
<a name="409" /><span class="False">     409:</span>                   <span class="m">unsigned</span> <span class="b">migratetype</span><span class="f">)</span><span class="f">;</span>
<a name="410" /><span class="False">     410:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">free_contig_range</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">pfn</span><span class="f">,</span> <span class="m">unsigned</span> <span class="b">nr_pages</span><span class="f">)</span><span class="f">;</span>
<a name="411" /><span class="False">     411:</span> 
<a name="412" /><span class="False">     412:</span> <span class="k">/* CMA stuff */</span>
<a name="413" /><span class="False">     413:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">init_cma_reserved_pageblock</span><span class="f">(</span><span class="m">struct</span> <span class="b">page</span> <span class="f">*</span><span class="b">page</span><span class="f">)</span><span class="f">;</span>
<a name="414" /><span class="False">     414:</span> 
<a name="415" /><span class="Maybe">     415:</span> <span class="f">#</span><span class="n">endif</span>
<a name="416" /><span class="Maybe">     416:</span> 
<a name="417" /><span class="True">     417:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* __LINUX_GFP_H */</span>
<a name="418" /><span class="True">     418:</span> </pre>
  </body>
</html>
